'''
八种简单的修装器：
    装饰器：为原函数扩展新功能，用新功能去代替旧功能
    作用：再不改变原有的代码的基础上，实现功能上的扩展
    符号：@  作用：1 把@符号下面的函数当作参数传递给装饰器
                  2 可以把函数进行返回，让新的函数去替代旧的函数，以实现功能性的扩展
'''
''' 没符号的写法 '''
# def fun2(fun):
#     def new():
#         print('你好')
#         fun()
#         print('再见')
#     return new
#
# def fun():
#     print('hello.world')
#
# fun = fun2(fun)
# fun()

''' @符号的写法 '''
# def fun2(fun):
#     def new():
#         print('我是？')
#         fun()
#         print('我你是你爸爸')
#     return new
#
# @fun2
# def fun():
#     print('你是?')
#
# fun()

''' @符号的写法2 '''

def fun3(fun):
    def new():
        print('他是？')
        fun()
        print('他你是你姥姥')
    return new
def fun2(fun):
    def new():
        print('我是？')
        fun()
        print('我你是你爸爸')
    return new
@fun2
@fun3
def fun():
    print('你是?')

fun()




